/*
用类似本章例题10.23中process函数的方法，实现用矩形法求定积分的通用函数。并分别计算(0,1)sinxdx，(0,1)cosxdx和(0,1)e^xdx。
说明：sin、cos、exp等函数已经在系统提供的数学函数库中，在程序开头使用#include<math.h>即可使用。

输入
无

输出
共有三个用空格隔开的实数，全部保留4位小数。
请注意行尾输出换行。
*/
#include <stdio.h>
#include <math.h>
double func1(double x)
{
    return sin(x);
}
double func2(double x)
{
    return cos(x);
}
double func3(double x)
{
    return exp(x);
}

/*
f   被积函数
a   积分下限
b   积分上限
n   分割区间数
*/
double rectangleIntegral(double (*f)(double), double a, double b, int n)
{
    double s = 0.0;
    double dx = (b - a) / n;
    for (int i = 0; i < n; i++)
    {
        double x = a + (i + 0.5) * dx;
        double value = f(x);
        s += value * dx;
    }
    return s;
}

int main()
{
    printf("%.4lf %.4lf %.4lf", rectangleIntegral(func1, 0.0, 1.0, 100), rectangleIntegral(func2, 0.0, 1.0, 100), rectangleIntegral(func3, 0.0, 1.0, 100));
}